package br.com.cqipac.ejb;

import java.util.List;

import javax.ejb.Stateless;
import javax.jws.WebMethod;
import javax.jws.WebResult;
import javax.jws.WebService;

import br.com.cqipac.service.AutenticaService;
import br.com.cqipac.service.DisposicaoService;
import br.com.cqipac.service.FuncionarioService;
import br.com.cqipac.service.MenuService;
import br.com.cqipac.service.NaoConformidadeService;
import br.com.cqipac.service.SetorFuncionarioService;
import br.com.cqipac.service.SetorService;
import br.com.cqipac.service.TipoNaoConformidadeService;
import br.com.cqipac.to.Disposicao;
import br.com.cqipac.to.Funcionario;
import br.com.cqipac.to.Menu;
import br.com.cqipac.to.NaoConformidade;
import br.com.cqipac.to.Setor;
import br.com.cqipac.to.SetorFuncionario;
import br.com.cqipac.to.TipoNaoConformidade;

@WebService(name = "CQIpacWS", serviceName = "CQIpacWS")
@Stateless
public class FacadeIpac implements FacadeIpacRemote {

	public SetorFuncionario autentica(SetorFuncionario setorFuncionario)
			throws Exception {
		AutenticaService autenticaService = new AutenticaService();
		setorFuncionario = autenticaService.autentica(setorFuncionario);
		return setorFuncionario;
	}

	public List<Menu> listaMenus(SetorFuncionario setorFuncionario)
			throws Exception {
		MenuService menuService = new MenuService();
		List<Menu> menus = menuService.listarMenus(setorFuncionario);
		return menus;
	}

	///////////////////////////////////////////////////////////////////////

	@WebMethod
	@WebResult(name = "funcionarios")
	public List<Funcionario> listaFuncionarios() throws Exception {
		FuncionarioService funcionarioService = new FuncionarioService();
		List<Funcionario> funcionarios = funcionarioService.listaFuncionario();
		return funcionarios;
	}

	@Override
	public List<Funcionario> listaFuncionarios(Funcionario funcionario)
			throws Exception {
		FuncionarioService funcionarioService = new FuncionarioService();
		List<Funcionario> funcionarios = funcionarioService
				.listaFuncionario(funcionario);
		return funcionarios;
	}

	public Funcionario buscaFuncionario(Funcionario funcionario)
			throws Exception {
		FuncionarioService funcionarioService = new FuncionarioService();
		funcionario = funcionarioService.buscaFuncionario(funcionario);
		return funcionario;
	}

	public void inserirFuncionario(Funcionario funcionario,
			Funcionario funcionarioInclusao) throws Exception {

		FuncionarioService funcionarioService = new FuncionarioService();
		funcionarioService
				.cadastraFuncionario(funcionario, funcionarioInclusao);

	}

	@Override
	public Funcionario buscaFuncionario(int codFuncionario) throws Exception {
		FuncionarioService funcionarioService = new FuncionarioService();
		return funcionarioService.buscaFuncionario(codFuncionario);
	}

	public void excluirFuncionario(Funcionario funcionario) throws Exception {
		FuncionarioService funcionarioService = new FuncionarioService();
		funcionarioService.excluiFuncionario(funcionario);
	}

	public void editarFuncionario(Funcionario funcionario,
			Funcionario funcionarioInclusao) throws Exception {

		FuncionarioService funcionarioService = new FuncionarioService();
		funcionarioService.editarFuncionario(funcionario, funcionarioInclusao);

	}

	///////////////////////////////////////////////////////////////////////

	@WebMethod
	@WebResult(name = "setores")
	public List<Setor> listaSetores(Setor setor) throws Exception {
		SetorService setorService = new SetorService();
		List<Setor> setores = setorService.listarSetores(setor);
		return setores;
	}

	public List<Setor> listaSetores() throws Exception {
		SetorService setorService = new SetorService();
		List<Setor> setores = setorService.listarSetores();
		return setores;
	}

	public void inserirSetor(Setor setor, Funcionario funcionario,
			Funcionario funcionarioInclusao) throws Exception {

		SetorService setorService = new SetorService();
		setorService.inserirSetor(setor, funcionario, funcionarioInclusao);
	}

	public void editarSetor(Setor setor, Funcionario funcionario,
			Funcionario funcionarioInclusao) throws Exception {

		SetorService setorService = new SetorService();
		setorService.editarSetor(setor, funcionario, funcionarioInclusao);
	}

	public Setor buscaSetor(int codSetor) throws Exception {
		SetorService setorService = new SetorService();
		return setorService.buscaSetor(codSetor);
	}

	public void excluirSetor(Setor setor) throws Exception {
		SetorService setorService = new SetorService();
		setorService.excluiSetor(setor);
	}

	///////////////////////////////////////////////////////////////////////

	public void inserirTipoNaoConformidade(
			TipoNaoConformidade tipoNaoConformidade,
			Funcionario funcionarioInclusao) throws Exception {

		TipoNaoConformidadeService tipoNaoConformidadeService = new TipoNaoConformidadeService();
		tipoNaoConformidadeService.cadastraTipoNaoConformidade(
				tipoNaoConformidade, funcionarioInclusao);
	}

	public void editaTipoNaoConformidade(
			TipoNaoConformidade tipoNaoConformidade,
			Funcionario funcionarioInclusao) throws Exception {

		TipoNaoConformidadeService tipoNaoConformidadeService = new TipoNaoConformidadeService();
		tipoNaoConformidadeService.editaTipoNaoConformidade(
				tipoNaoConformidade, funcionarioInclusao);
	}

	@Override
	public List<TipoNaoConformidade> listaTipoNaoConformidades()
			throws Exception {
		TipoNaoConformidadeService tipoNaoConformidadeService = new TipoNaoConformidadeService();
		List<TipoNaoConformidade> tipoNaoConformidades = tipoNaoConformidadeService
				.listarTipoNaoConformidades();
		return tipoNaoConformidades;
	}

	public List<TipoNaoConformidade> listaTipoNaoConformidade(
			TipoNaoConformidade tipoNaoConformidade) throws Exception {
		TipoNaoConformidadeService tipoNaoConformidadeService = new TipoNaoConformidadeService();
		List<TipoNaoConformidade> tipoNaoConformidades = tipoNaoConformidadeService
				.listarTipoNaoConformidade(tipoNaoConformidade);
		return tipoNaoConformidades;
	}
	

	@Override
	public TipoNaoConformidade buscaTipoNaoConformidade(int codTipoNaoConformidade)
			throws Exception {

		TipoNaoConformidadeService tipoNaoConformidadeService = new TipoNaoConformidadeService();
		
		return tipoNaoConformidadeService.buscaTipoNaoConformidade(codTipoNaoConformidade); 
	}

	@Override
	public void excluirTipoNaoConformidade(
			TipoNaoConformidade tipoNaoConformidade) throws Exception {

		TipoNaoConformidadeService tipoNaoConformidadeService = new TipoNaoConformidadeService();
		
		tipoNaoConformidadeService.excluiTipoNaoConformidade(tipoNaoConformidade); 
		
	}	

	///////////////////////////////////////////////////////////////////////

	@Override
	public void inserirNaoConformidade(NaoConformidade naoConformidade)
			throws Exception {

		NaoConformidadeService naoConformidadeService = new NaoConformidadeService();
		naoConformidadeService.inserirNaoConformidade(naoConformidade);

	}
	
	@Override
	public void editarNaoConformidade(NaoConformidade naoConformidade)
			throws Exception {

		NaoConformidadeService naoConformidadeService = new NaoConformidadeService();
		naoConformidadeService.editarNaoConformidade(naoConformidade);

	}

	@Override
	public List<NaoConformidade> listaNaoConformidades() throws Exception {

		NaoConformidadeService naoConformidadeService = new NaoConformidadeService();
		List<NaoConformidade> naoConformidades = NaoConformidadeService
				.listarNaoConformidades();
		return naoConformidades;
	}

	@Override
	public NaoConformidade buscaNaoConformidade(int codNaoConformidade)
			throws Exception {
		NaoConformidadeService naoConformidadeService = new NaoConformidadeService();
		return naoConformidadeService.buscaNaoConformidade(codNaoConformidade);
	}

	///////////////////////////////////////////////////////////////////////////

	public void inserirDisposicao(Disposicao disposicao) throws Exception {
		DisposicaoService disposicaoService = new DisposicaoService();
		disposicaoService.inserirDisposicao(disposicao);

	}

	public List<Disposicao> listaDisposicao() throws Exception {
		DisposicaoService disposicaoService = new DisposicaoService();
		List<Disposicao> disposicoes = disposicaoService.listarDisposicoes();
		return disposicoes;
	}

	public Disposicao buscaDisposicao(int codDisposicao) throws Exception {
		DisposicaoService disposicaoService = new DisposicaoService();
		return disposicaoService.buscaDisposicao(codDisposicao);

	}

	public void editaDisposicao(Disposicao disposicao) throws Exception {

		DisposicaoService disposicaoService = new DisposicaoService();
		disposicaoService.editarDisposicao(disposicao);
	}
	
	/////////////////////////////////////////////////////////////////////

	@Override
	public List<SetorFuncionario> listaSetorFuncionario(SetorFuncionario setorFuncionario)
			throws Exception {
		SetorFuncionarioService setorFuncionarioService = new SetorFuncionarioService();
		return setorFuncionarioService.listaSetorFuncionario(setorFuncionario);
		
	}

	@Override
	public void insereSetorFuncionario(SetorFuncionario setorFuncionario)
			throws Exception {
		SetorFuncionarioService setorFuncionarioService = new SetorFuncionarioService();
		setorFuncionarioService.cadastraSetorFuncionario(setorFuncionario);
		
	}

}
